package com.zxh.springboot.bean;

import com.zxh.springboot.config.AppConfig;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletRegistration;

public class MyWebApplicationInitializer implements WebApplicationInitializer {

    public void onStartup(ServletContext servletContext) {

        // Load Spring web application configuration
        //通过注解的方式初始化Spring的上下文
        AnnotationConfigWebApplicationContext ac = new AnnotationConfigWebApplicationContext();
        //注册spring的配置类（替代传统项目中xml的configuration）
        ac.register(AppConfig.class);
        ac.refresh();

        // Create and register the DispatcherServlet
        //基于java代码的方式初始化DispatcherServlet
        DispatcherServlet servlet = new DispatcherServlet(ac);
        ServletRegistration.Dynamic registration = servletContext.addServlet("app", servlet);
        registration.setLoadOnStartup(1);
        registration.addMapping("/");//addMapping("/app/*")

//        ApplicationContext context = ContextUtils.getContext();
//        DispatcherServlet dispatcherServlet = null;
//        if(context instanceof WebApplicationContext){
//            dispatcherServlet = new DispatcherServlet((WebApplicationContext)context);
//        }else {
//            dispatcherServlet = new DispatcherServlet();
//        }
//        ServletRegistration.Dynamic registration = servletContext.addServlet("app",dispatcherServlet);
//        registration.setLoadOnStartup(1);
//        registration.addMapping("/");
    }
}
